//日志等级模块:
//定义出日志系统所包含的所有日志等级
// //UNKNOW = 0,
// DEBUG, 调试等级的日志
// INFO, 提示等级的日志
// WARN, 警告等级的日志
// ERROR, 错误等级的日志
// FATAL, 致命错误等级的日志
// OFF,
// 每一个项目中都会设置一个默认的日志输出等级，只有输出的日志等级大于等于默认限制等级的时候才可以进行输出
// 提供一个接口，将对应等级的枚举，转换为一个对应的字符串
// DEBUG ---> "DEBUG"
#ifndef __M_LEVEL_H__
#define __M_LEVEL_H__
#include"util.hpp"
namespace logsys {
    class LogLevel {
    public:
        // 定义一个枚举类value，用于表示不同的日志等级
        enum class value {
            UNKNOW = 0,
            DEBUG,
            INFO,
            WARN,
            ERROR,
            FATAL,
            OFF
        };

        // 静态成员函数toString，功能是将传入的日志等级枚举值转换为对应的字符串
        static const char* toString(LogLevel::value level) {
            // 使用switch语句根据不同的日志等级枚举值进行分支判断
            switch (level) {
                case LogLevel::value::DEBUG: return "DEBUG"; // 如果是DEBUG等级，返回字符串"DEBUG"
                case LogLevel::value::INFO: return "INFO";   // 如果是INFO等级，返回字符串"INFO"
                case LogLevel::value::WARN: return "WARN";   // 如果是WARN等级，返回字符串"WARN"
                case LogLevel::value::ERROR: return "ERROR"; // 如果是ERROR等级，返回字符串"ERROR"
                case LogLevel::value::FATAL: return "FATAL"; // 如果是FATAL等级，返回字符串"FATAL"
                case LogLevel::value::OFF: return "OFF";     // 如果是OFF等级，返回字符串"OFF"
            }
            return "UNKNOW"; // 如果传入的枚举值不属于以上任何一种已知情况，返回字符串"UNKNOW"
        }
    };
}
#endif